﻿using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using equinoxWeb.Models;

namespace equinoxWeb.GestionConexion
{
    public class UsuarioFunction
    {
        public static Usuario abrirUsuario(int id)
        {
            Usuario usuario = new Usuario();
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("SELECT idusuario,nombre,apellidoPat,apellidoMat,idcliente " +
                "FROM usuario WHERE idusuario=@id", con);
            cmd.Parameters.AddWithValue("@id", id);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();

            if (res.Read())
            {
                usuario.IdUsuario = res.GetInt32("idusuario");
                usuario.Nombre = res.GetString("nombre");
                usuario.ApellidoMat = res.GetString("apellidoMat");
                usuario.ApellidoPat = res.GetString("apellidoPat");
                usuario.IdCliente = res.IsDBNull(4)?0:res.GetInt32(4);
            }
            else
                usuario = null;
            res.Close();
            gestor.CloseConnection();
            return usuario;
        }
        public static List<Usuario> listarUsuario()
        {
            List<Usuario> listaUsuario = new List<Usuario>();
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("SELECT idusuario,nombre,apellidoPat,apellidoMat,idcliente " +
                "FROM usuario where idcliente is null and idusuario != 14 ", con);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();

            while (res.Read())
            {
                Usuario usuario = new Usuario();
                usuario.IdUsuario = res.GetInt32("idusuario");
                usuario.Nombre = res.GetString("nombre");
                usuario.ApellidoMat = res.GetString("apellidoMat");
                usuario.ApellidoPat = res.GetString("apellidoPat");
                usuario.IdCliente = res.IsDBNull(4) ? 0 : res.GetInt32(4);
                listaUsuario.Add(usuario);
            }
            res.Close();
            gestor.CloseConnection();
            return listaUsuario;
        }
        public static int getNextId(MySqlConnection con)
        {
            int idusuario = 0;
            MySqlCommand cmd;
            cmd = new MySqlCommand("select count(*)  from usuario", con);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();
            while (res.Read())
            {
                idusuario = res.GetInt32(0);
            }
            idusuario++;
            res.Close();
            return idusuario;
        }
        public static void agregarUsuario(Usuario usuarioModel)
        {
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            usuarioModel.IdUsuario = getNextId(con);
            MySqlCommand cmd;
            cmd = new MySqlCommand("Insert into usuario (idusuario,nombre, " +
                "apellidoPat,apellidoMat,usuario,contrasenha, idcliente) " +
                "values (@idusuario,@nombre, " +
                "@apellidoPat,@apellidoMat,@usuario,@contrasenha, " +
                "@idcliente)", con);
            cmd.Parameters.AddWithValue("@idusuario", usuarioModel.IdUsuario);
            cmd.Parameters.AddWithValue("@nombre", usuarioModel.Nombre);
            cmd.Parameters.AddWithValue("@apellidoPat", usuarioModel.ApellidoPat);
            cmd.Parameters.AddWithValue("@apellidoMat", usuarioModel.ApellidoMat);
            cmd.Parameters.AddWithValue("@usuario", usuarioModel.Cuenta);
            cmd.Parameters.AddWithValue("@contrasenha", usuarioModel.Contrasenha);
            cmd.Parameters.AddWithValue("@idcliente", usuarioModel.IdCliente);
            //cmd.Parameters.AddWithValue("@tieneclub", usuarioModel.Tieneclub);
            cmd.Prepare();
            cmd.ExecuteNonQuery();
            gestor.CloseConnection();
        }
    }
}